package com.zhx.basis.网络通信.聊天室demo;


import java.nio.ByteBuffer;

public class Test {
//    public static void main(String[] args) {
//        File f = new File("C:\\Users\\dlei\\Desktop\\BIO,NIO,AIO\\shiping");
//        File[] fs = f.listFiles();
//        for (File file : fs) {
//            Integer num = Integer.valueOf(file.getName().substring(0 , file.getName().indexOf("."))) + 23;
//            file.renameTo(new File(f  , num +"."+ file.getName().substring(file.getName().indexOf("."))));
//        }
//    }
    public static void main(String[] args) {



//        new ClientChat().initView();
//        ByteBuffer buf = ByteBuffer.allocateDirect(1024);
//        System.out.println(buf.isDirect());





//        String str = "itheima";
//        ByteBuffer buf = ByteBuffer.allocate(1024);
//        buf.put(str.getBytes());
//        buf.flip();//转换为读取模式
//        byte[] dst = new byte[buf.limit()];
//        buf.get(dst, 4, 3);//把字符串截取length个字符放到字节数组的offset+1下标位置
//        System.out.println("dst=="+new String(dst, 0, dst.length));
//        System.out.println(buf.position());//缓冲区get了多少length，position就变为几
//        System.out.println(buf.limit());//缓冲区的大小
//        //mark() : 标记
//        buf.mark();
//        buf.get(dst, 0, 3);
//        System.out.println("dst=="+new String(dst, 0, dst.length));
//        System.out.println(buf.position());
//        //reset() : 恢复到 mark 的位置
////        buf.reset();
//        System.out.println(buf.position());
//        //判断缓冲区中是否还有剩余数据
//        if(buf.hasRemaining()){
//            //获取缓冲区中可以操作的数量
//            System.out.println(buf.remaining()); //返回 position 和 limit 之间的元素个数
//        }




        String str = "itheima";
        //1. 分配一个指定大小的缓冲区
        ByteBuffer buf = ByteBuffer.allocate(1024);
        System.out.println("-----------------allocate()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());//容量

        //2. 利用 put() 存入数据到缓冲区中
        buf.put(str.getBytes());
        System.out.println("-----------------put()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());

        //3. 切换读取数据模式
        buf.flip();
        System.out.println("-----------------flip()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());

        //4. 利用 get() 读取缓冲区中的数据
        byte[] dst = new byte[buf.limit()];
        buf.get(dst);
        System.out.println(new String(dst, 0, dst.length));

        System.out.println("-----------------get()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());
        //5. rewind() : 可重复读
        buf.rewind();
        System.out.println("-----------------rewind()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());

        //6. clear() : 清空缓冲区. 但是缓冲区中的数据依然存在，但是处于“被遗忘”状态
        buf.clear();
        System.out.println("-----------------clear()----------------");
        System.out.println(buf.position());
        System.out.println(buf.limit());
        System.out.println(buf.capacity());
        System.out.println((char)buf.get());
    }
}
